home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Die Speccy' 97
/
Die Speccy' 97.iso
/
amiga_system
/
the_aminet
/
util
/
misc
/
ultimatepatchs.lha
/
UPS
/
DPatch
/
DPatch.doc
< prev
next >
Wrap
Text File
|
1994-08-09
|
17KB
|
359 lines
___.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.___
Yet Another Fine Production From
Wizard/GlenzPointS
(c) 1994
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Release Date 04/08/1994 (version 1.0)
Second Release 05/08/1994 (version 1.1)
Third Release 09/08/1994 (version 1.2)
___.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.___
u╖S╖e╖R F╖R╖i╖N╖D╖L╖y M╖a╖N╖u╖a╖L
(mixed version)
___.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.___
---< TaBLe oF CoNTeNTS >---
I......iNTRoDuCTioN
II..............WHy
III............WHaT
IV..............HoW
V........BuG RePoRT
VI..............WHo
VII.........HiSToRy
---< TaBLe oF iLLuSTRaTioNS >---
VIII...........NoNe
___.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.___
---< iNTRoDuCTioN >---
\ /
\X/ell, at least, here it is... my dream came true. I've just written my
first patcher. Well, it's not such hard job as some may think, but still
it wouldn't be possible without assistance of my good friend SAA who gave
me a final tip to start coding this piece of art. At first I intended to
write this manual in English, but then... is there any chance for this
production to reach Inter Net or even to get out of the country? Beat me,
I have no idea, but I suppose not... So, a little surprise to all of you
whose mother tongue ain't English... it's Croatian version of this manual.
Any forigners may contact me at my address and require English written
manual. I'll be happy to release it - just ask. ;)
(...after few seconds...)
|\ |
| \|aaaaaah! Sorry, but it seems I'm too lazy to write this manual twice.
Everyone who is interested to translating this manual to his/her local
language should know that he/she has my full permission of doing that. I'd
also like to recieve translated version to include it in any further
release of this product.
---< WHy? >---
\ /
\X/hy? Honestly - just to see if I'm able to write it. Well, I
definitely am and I'm glad for that. I've been thinking what to choose for
my first patch and then I had brain-storming. I asked myself what makes me
most problems while doing anything with my Amiga and trying to do it as
fast as possible? It's definitly dos.library's Delete() function...
Gee... I can't even recall how many times I've deleted something I
shouldn't and then cried over spoilt milk... So, decision became clear -
Delete(). Let's fix it!
---< WhaT? >---
_
| \
l_/eletePatch, or DPatch for short, is program especially designed to be
short, powerful and more than anything else - useful. Its function is very
clear. You've probably (more than once!) deleted something you didn't want
to destroy? There are many useful tools for recovering lost data, but it's
painful job and not so easy to do. Sometime you delete something unpurpose
and overwrite it with something else. There's no help. Contents is gone
forever. Many programs don't even warn you when they're trying to delete
something. For instance - when you're working with Imagine's Quick Render
option it won't let you know that it's going to delete previous picture.
That's OK, because it's just a Quick Render, but if you've selected this
option unpurpose the picture is gone anyway. Not good. Not good at all.
DOPUS is one of the greatest utilities I've ever used with my Amiga, but
sometime I just have to do few disk operations, like deleting or moving
files, from DOS. DOPUS would warn me if I've selected deleting some files
but DOS wouldn't and again, more than once, I'm to fast to realize that
I've just started deleting directory instead of file. I hate when this
happens.
___
|
|hat would be enough of bad expiriences. Now lets discuss cure for this.
I needed small proggy to tako control over Delete() function and to pop up
requester EVERY time it's called from ANY program. I don't care WHY, but I
just wanna know that something in memory trying to delete something, either
in RAM (Ram Disk) or on hard or floppy disk. Got it?
---< HoW? >---
__
|_
l__asy. I used Trash'm One 2 (THX SAA, again!) to create it because I just
adore this assembler. It's so comfortable that I feel like being able to
write data base using it. Almost. :->
|
| choose assembler to keep code short because it'll be resident in memory
until depatch code is called. Program uses reqtools.library to make pop up
requesters more user friendly. I'm satisfied with results and it's really
nice proggy.
|\ |
| \|ote: this patcher has been written using my A4040 (lucky me, ah? :->)
and you'll need OS3.0+ for proper use of it (patcher, not my Amiga!).
Credits for incompatibility with previous OSes should be sent to C='s
DOS.library developers because it's unpossible to patch some of
DOS.library's functions using SetFunction(). I need no more illegal
programming. At least no while writing something that uses system... so,
I let it go. (Yes, I know, Snoop and similar programs also patch DOS.lib's
calls, but in another way and I had no time to go 'around'). Get OS3.0+,
get AGA, get livin'! :->
\ /
\X/hen DPatch is started (from CLI) it install resident piece of code
(less than $140 bytes) in allocated memory. If it's impossible to
allocated memory DPatch won't be started and control is immediately
returned to DOS without patching anything. No information is given to user
because code would be longer and I tried to make it as compact as possible.
If patcher is installed it'll wait for DOS' Delete() calls and then take
control over it. Requester will pop up offering three different options.
First one is "I'll take my risk!". Choosing this one, Delete() is enabled
and executed. Second one is "Beat me!" and it's DEPATCH part of this
proggy. Clicking on this gadget will restore old Delete() and at the same
time it'll call old Delete() as you've selected first option. Last gadget
"Noooo! I'm innocent" will disable Delete() and just skip Delete()'s call
from any program. First option (delete enabled) is set as default.
Pressing Return key or clicking mouse on its gadget will activate it.
\ /
\/ersion 1.1 has new option added. Well, it's not a gadget option but if
you've been using DPatch v1.0 you might remeber that you couldn't know
which file is being deleted. Now it's fixed. Requester will show file
name, so you'll allways know which file is 'in danger'.
\ /
\/ersion 1.2 is improved and it's been made more intelligent. How? Well,
if you're trying to delete some file with appropriate .info and if you're
doing this from some proggy that automatically delete .infos (like DOPUS,
or WorkBench's Menu->Icons->Delete!) you won't get DPatch requester twice
any more. DPatch is finally able to recognize few operations and it'll
automatically enable deleting .info files. This was SAA's idea and I find
it superb! But this is not all that v1.2 offers! I usually use DOPUS for
anything I do with files, so I decided to make no problems between
DPatch<=>DOPUS. There was something really annoying. DPatch would ask you
twice if you decided not to delete something (from DOPUS!). This is
because DOPUS recheck delete operations and if they're not performed
correctly same command will be executed one more time. I hated it! And I
fixed it. Some problems appeared with CLI (check Bug Report!), but it
works! Enough? No, not enough... I forgot to mention just one more thing
related to deleting .info files. If you have some <NAME> file, and
<NAME.info>, you might also have <NAME.info.info.info> ;). You probably
won't, but you might. So, whatz up? DPatch will erase them all. :) I
like it this way, I did it this way. ;) BTW, in case you had no idea - WB
is unable to show 'doubled-info' files. If you have files X, X.info and
X.info.info only two files will be used and showed (X and X.info). If you
delete X.info, WB will automatically use X.info.info under the name X.info.
Weird. Well, it won't confuse DPatch. ;)
---< BuG RePoRT >---
|/
|\nown bugs? Hmmmm... hard to answer. This is a patcher. It uses some
dirty tricks to work as I wanted him. Question is - at what price? At the
time I'm writting this lines patcher is active. I'm currently in Cygnus
Editor and every few lines this text is being saved. Just in case. Every
time I choose WRITE option from CED's menus requester pops up. CED is
trying to delete old file before writing new one (CED is using some
temporary files while doing this). It's nice. Requester pops up and I
just press return. My text is perfectly safe.
_
|_)
l_)ut! I tested it with other programs and find out few other things you
should be awere. When patcher is active, trying to delete something via
Workbench's Delete command (selected in Icon's menu) will result with
double DPatch requester. This is perfectly NORMAL. Why? In this case,
Workbench is trying to delete contents of icon you've selected and then
icon itself. Got it? When calling DELETE command from CLI while patcher
is active and choosing disable option, DELETE command will return just name
of file instead of default syntax "NAME deleted". You'll also notice
there's no end-of-line character in returned string. This is also OK and
DELETE's author(s) should be blamed for this - not me. Finally, I've
tested patching patcher... :) I've started Snoop and patch Delete() with
DPatch. Results? A little bit weird. If patcher is started BEFORE Snoop
everything will be OK, but Snoop is a clever tool. If patcher is started
after Snoop and if you're trying to close Snoop you'll get message from
Snoop that something (guess what?) has patched Delete(). Cure? Depatch
DPatcher and Snoop will exit automatically. These were custom problems and
if you have problem with any other program please try to solve it in a
similar way or let me know.
|
\|ust one more thing! This patcher should be started from CLI or something
that emulates CLI. Starting it from icon (from WB) will probably crash the
system causing alert window to appear. Works fine with SUSPEND option (if
you don't won't to reboot at the moment!) but for your own safety finish
all your tasks and reboot manually.
___
|
|his is a brief update for v1.2. New 'bug' might be found in this version
so it's better to let you all familiar with the problem. Problem appears
when you change your mind after calling DELETE command in CLI line. If you
really change your mind and decide not to delete file that you've just
jugded to death second ago, there'll be troubles. Delete won't be
executed, don't worry, but you'll be unable to delete specified file until
'remember buffer' keep its name. I used some weird techniques just to fix
DOPUS troubles, so I had to compare names of some files. When, inside
DOPUS, you're trying to delete something and then you stop it with DPatch,
DOPUS will send same delete request and DPatch will apear again (check
previous DPatch version if you don't believe me!). This sucks and I
decided to get rid of it. I had to compare names and if same name has been
called twice just pass to DPatch old values (so, if you decided to delete
it - delete it all without further questions). This caused some DELETE
problems in CLI because you have to clear this 'remember buffer' manually
and there's only one way of doing this - erasing something else before
repeating DELETE command with 'remembered' name.
---< WHo? >---
_
|_)
l_)ug reports, credits, money, 4 extra Megs of RAM, new 14.4K modem, HPLJ
IV, CD ROM, Ferrari, yacht, nice looking girls, blah, blah, blah... could
be sent to my address...
Goran Paulin
(Wizard/GPS)
Rade Supica 1
51000 Rijeka
Croatia
You can also reach me by E-Mail at:
TVRi BBS (Rijeka, Croatia)
(77:500/102) CroLink
(2:381/106) FidoNet
(user ID Goran Paulin)
Never heard for this? Never mind... you can still write me a letter.
|
|f you're sending disks asking for some swapping stuff, please include
either return stamps (for Croatia only) or one extra disk. You know the
rulez, so...
---< HiSToRy >---
-[ v1.0 ]-
I did it! It works! What else would you like?!? :)
-[ v1.1 ]-
I realized there's something wrong. I've been writing some scripts for
DOPUS and at the same time I've been using DPatch. When I executed my
script, DPatch warn me many, many, many times and I had no idea which files
are 'in danger'. So, I decided to add name of the file that should be
deleted in requester. When requester pops up, file name will be shown.
Great! Perfect! Just as I wanted! ;->
Oh, yes! I've just decided to write Amiga Guide version of this document.
-[ v1.2 ]-
Question: "Is it worth releasing this version?". Answer should be: "Yes,
it is!" and you'd be damn right! :-> Look at the progress of this patcher.
In only 5 days it's been modified three times. Yeah! Great, ah? Why?
Well, I tried to discuss my problems related to this in Amiga.CL (CL stands
for CroLink, don't ask, believe!), but until now I've been talking only to
two persons. First is SAA who gives me new ideas and support to release
new versions. Second 'chatter' was Dr.J who discovered that this baby
doesn't work with his machine (A500/KS1.3). NOT MY FAULT, I repeat IT'S
NOT MY FAULT. Designers of earlier versions of dos.library (ver$ < 39.00)
missed few things so it's unpossible to patch DOS functions in a legal way
without jumping in Supervisor mode, calculating checksum manually and then
gettin' back to User state... no, THX, I'll stick to OS3.0 with, hm...
clear dos.library (I'm sure things are still a little messy, but less than
before 'cause SetFunction() works fine with it now). What's really new is
a little bit of intelligence added to DPatch. ;) Sounds nice, ah? Well,
important things are described in previous sections of this manual, but for
short - now requester won't pop up when something's trying to delete
<FILE>.info file (if <FILE> has just been deleted!) and <FILE>.info will be
automatically deleted without questions. There were also some problems
with DOPUS. Problems usually appeared when user decided not to delete
something 'breaking' delete call with DPatch. At this point DOPUS (I have
no idea why) would call Delete() once again which means that you'd have to
answer same question twice. Damn stupid. I had to fix it and I did. BUT!
New problem appeared. :-< If you're using DELETE command (here we go
again... ;->) and decide not to delete what you've just ordered, you'll be
unable to delete it in next CLI line (for short - you can't have to lines
"DELETE XXX" if you forbid first delete!). There's only one cure for this
problem - give up OPUS support, what wouldn't be clever, so I let it this
way. If you change your mind ("I REALLY wanna delete it!"), you'll have to
delete something else just to empty buffer where old name was kept. Got
it? A bit painful, but... optimal solution.
___.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.___
Oh, I almost forgot - this program is PD. If you decide to send me
few bucks or whatever, consider it ShareWare and be happy. I will.
___.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.___
. _____ _____ _____ .
:( ____):( ___ ):( ___):
:( )_( ):( __):(___ ):
:(_____):(___):::(_____):
:\\X/X/:Glenz:PointS:'94:
:/o O \:/\/\__:You:have::
:\ (. /:\ \__/_:::No:::::
::\~ /(c)\____/:Excuse:::
F╖e╖e╖l╖F╖r╖e╖e╖2╖J╖o╖i╖n
___.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.__.+'~~`+.___